"""
测试qfluentwidgets的MessageBox正确用法
"""
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
from qfluentwidgets import MessageBox


class MessageBoxDemo(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("MessageBox 测试")
        self.setGeometry(300, 300, 400, 300)
        
        # 创建中央部件
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        
        # 创建布局
        layout = QVBoxLayout(central_widget)
        
        # 创建按钮
        self.btn_simple = QPushButton("测试基本MessageBox")
        self.btn_custom = QPushButton("测试带自定义按钮的MessageBox")
        self.btn_quit = QPushButton("测试退出确认")
        
        # 添加按钮到布局
        layout.addWidget(self.btn_simple)
        layout.addWidget(self.btn_custom)
        layout.addWidget(self.btn_quit)
        
        # 连接信号
        self.btn_simple.clicked.connect(self.show_simple_messagebox)
        self.btn_custom.clicked.connect(self.show_custom_messagebox)
        self.btn_quit.clicked.connect(self.show_quit_messagebox)
    
    def show_simple_messagebox(self):
        """显示基本的MessageBox"""
        result = MessageBox("基本对话框", "这是一个基本的消息框", self)
        print(f"基本MessageBox返回值: {result}")
    
    def show_custom_messagebox(self):
        """显示带自定义按钮的MessageBox"""
        result = MessageBox(
            "确认对话框",
            "这是一个带自定义按钮的对话框\n请问您想继续吗？",
            self,
            "确定", "取消"  # 自定义按钮文本
        )
        print(f"自定义按钮MessageBox返回值: {result} (0=确定, 1=取消)")
    
    def show_quit_messagebox(self):
        """显示退出确认对话框"""
        result = MessageBox(
            "退出确认",
            "确定要退出程序吗？",
            self,
            "是", "否"  # 自定义按钮文本
        )
        print(f"退出确认返回值: {result} (0=是, 1=否)")
        
        if result == 0:
            print("用户选择退出")
            self.close()
        else:
            print("用户取消退出")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MessageBoxDemo()
    window.show()
    sys.exit(app.exec_())
